package com.chen.springboot.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 限流注解
 *
 * @author chenchao
 * @date 2022/6/29 14:51
 */

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented   // 将注解生成在javadoc中
public @interface Limiter {
    int NOT_LIMIT = 0;

    /**
     * qps：Queries-per-second， 每秒查询率，QPS = req/sec = 请求数/秒
     */
    @AliasFor("qps")
    double value() default NOT_LIMIT;

    @AliasFor("value")
    double qps() default NOT_LIMIT;

    /**
     * 超时时长
     */
    int timeout() default 0;

    /**
     * 超时时间单位
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

}
